package com.example.flower_shop.websocket;

import org.springframework.web.socket.TextMessage;
import org.springframework.web.socket.WebSocketSession;

import java.util.Set;

public interface WebSocket {

    /**
     * 会话开始
     * @param session
     */
    void handleOpen(WebSocketSession session);

    /**
     * 会话关闭
     *
     * @param session
     */
    void handleClose(WebSocketSession session);

    /**
     * 出现异常
     * @param session
     * @param error
     */
    void HandleError(WebSocketSession session, Throwable error);

    /**
     * 消息处理
     * @param session 会话
     * @param message 接收到的消息
     */
    void handleMessage(WebSocketSession session, String message);

    /**
     * 发送消息
     * @param session 当前会话
     * @param message 消息
     */
    void sendMessage(WebSocketSession session, String message);

    /**
     * 发送消息
     * @param userId 用户id
     * @param message 消息
     */
    void sendMessage(String userId, TextMessage message);

    /**
     * 发送消息
     * @param userId 用户id
     * @param message 消息
     */
    void sendMessage(String userId, String message);

    /**
     * 发送消息给指定用户
     * @param userIds ID集合
     * @param message 消息
     */
    void sendMessagesToIncludedUsers(Set<String> userIds, String message);

    /**
     * 发送消息给指定用户之外的用户
     * @param userIds ID集合
     * @param message 消息
     */
    void sendMessagesToExcludedUsers(Set<String> userIds, String message);

    /**
     * 广播消息
     * @param message 消息
     */
    void broadcast(String message);

    /**
     * 广播消息
     * @param message 消息
     */
    void broadcast(TextMessage message);

    void sendMessage(MessageReq messageReq);
}
